Integrated circuit operation adjustment using redundant elements

ABSTRACT

An example method for adjusting operation of an integrated circuit includes testing a plurality of electronic elements of the integrated circuit including one or more redundant electronic elements designated as inactive according to a manufacturer&#39;s default configuration of the integrated circuit to determine one or more operating parameters of the integrated circuit. The method further includes selecting a subset of electronic elements from the plurality of electronic elements based on the one or more operating parameters, wherein the subset of electronic elements is designated as active according to an updated configuration of the integrated circuit, and controlling operation of the integrated circuit using the updated configuration instead of the manufacturer&#39;s default configuration.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. Provisional Patent Application Ser. No. 62/639,948, filed Mar. 7, 2018, the entirety of which is hereby incorporated herein by reference for all purposes.

BACKGROUND

Integrated circuits (ICs) may include various electronic elements such as a central processing unit (CPU), a graphics processing unit (GPU), and a memory array.

SUMMARY

Examples are disclosed that relate to refining power and performance characteristics of an integrated circuit including redundant electronic elements. In one example, a plurality of electronic elements of an integrated circuit may be tested to determine one or more operating parameters of the integrated circuit. The plurality of electronic elements includes one or more redundant electronic elements designated as inactive by a manufacturer's default configuration of the integrated circuit. A subset of electronic elements may be selected from the plurality of electronic elements based on the one or more operating parameters. The subset of electronic elements may be designated as active in an updated configuration of the integrated circuit. Operation of the integrated circuit may be controlled using the updated configuration instead of the manufacturer's default configuration.

This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of this disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 schematically shows an example computing system including an integrated circuit.

FIG. 2 schematically shows an example block diagram of a layout of compute units (CUs) in a graphics processing unit (GPU).

FIG. 3 shows an example integrated circuit adjustment method.

FIG. 4 shows another example integrated circuit adjustment method.

FIG. 5 schematically shows an example computing system.

DETAILED DESCRIPTION

Some integrated circuits may be designed to have one or more spare or redundant elements (e.g., processing cores, compute units, memory locations). Such redundant elements may be used by an integrated circuit manufacturer to perform a “repair” process after fabrication of the integrated circuit in which one or more of these redundant electronic elements are used in place of other electronic elements that are determined to be defective or not fully functional. By including redundant electronic element on the integrated circuit and performing the repair process, an integrated circuit may be deemed fully functional even if the integrated circuit includes some defective electronic elements. This helps the integrated circuit manufacturer to achieve desired yields of integrated circuits. The repair solutions employed by the integrated circuit manufacturer provide a limited amount of performance enhancement. Moreover, such repair solutions are implemented at either wafer test or module test, and focus on replacing defective electronic elements in the most time-efficient manner possible. As such, the test patterns and power delivery attributes of these device manufacturing test environments often differ substantially from those of the final computing system in which the integrated circuit device is used, and do not necessarily correlate with the performance requirements of the final computing system.

Conventionally, the integrated circuit manufacturer does not make the status and availability of such redundant/unused electronic elements visible to the computing system in which the integrated circuit is incorporated. Moreover, various operating parameters of the integrated circuit, such as memory access timing, are fixed by the manufacturer. There have been attempts to enhance the power and performance of multiple-core integrated circuits for specific computing system configurations, but such previous attempts have not made use of manufacturer-designated redundant electronic elements.

Accordingly, examples are disclosed that relate to refining power and performance characteristics of an integrated circuit including redundant electronic elements. Such integrated circuits may include CPUs, GPUs, and system on a chip (SoC) devices. In one example, a plurality of electronic elements of an integrated circuit may be tested to determine one or more operating parameters of the integrated circuit (e.g., minimum voltage level needed for operation, overall heat generation in the IC for various configurations of core usage). The plurality of electronic elements includes one or more redundant electronic elements designated as inactive by a manufacturer's default configuration of the integrated circuit. A subset of electronic elements may be selected from the plurality of electronic elements based on the one or more operating parameters. The subset of electronic elements may be designated as active in an updated configuration of the integrated circuit. Operation of the integrated circuit may be controlled using the updated configuration instead of the manufacturer's default configuration.

In another example, an integrated circuit may include a plurality of memory array elements configured according to a manufacturer's default configuration that specifies a first set of timing parameters for accessing the memory array elements. The plurality of memory array elements may be tested to determine one or more operating parameters of the integrated circuit. A second set of timing parameters different than the first set of timing parameters may be determined based on the one or more operating parameters. Operation of the integrated circuit may be controlled using the second set of timing parameters instead of the first set of timing parameters.

By adjusting the power and performance characteristics of the integrated circuit at a final implementation level using the redundant electronic elements of the integrated circuit, improved power characteristics at a given performance level may be achieved relative to the manufacturer-configured integrated circuit. In another example, at a given power level, enhanced system performance can be realized. In yet another example, operation of the integrated circuit may be adjusted to balance power and performance characteristics.

FIG. 1 schematically shows an example computing system 100 including an integrated circuit 102. The integrated circuit 102 includes electronic elements 104, some of which are designated by the integrated circuit manufacturer as being redundant and/or inactive. For example, the integrated circuit 102 includes a central processing unit (CPU) 106 having a plurality of processing cores 108, wherein one or more of the processing cores 108 are designated by the integrated circuit manufacturer as being redundant and/or inactive. The integrated circuit 102 further includes a graphics processing unit (GPU) 110 having a plurality of compute units 112, wherein one or more of the compute units 112 are designated by the integrated circuit manufacturer as being redundant and/or inactive. The integrated circuit 102 also includes one or more memory arrays 114 having a plurality of memory locations 116 arranged in rows and columns, wherein one or more of the memory locations 116, or rows, or columns are designated by the integrated circuit manufacturer as being redundant and/or inactive. For example, the memory array 114 may include SRAM, DRAM, or another type of memory component.

Although the memory array 114 is depicted as a separate component, in practice the integrated circuit may include multiple memory arrays. In some examples, at least some memory arrays may be incorporated within the other electronic elements (e.g., processing cores of the CPU and compute units of the GPU). In other examples, at least some memory elements may be outside of these computational units throughout the integrated circuit architecture (e.g., on-chip L2 cache, L3 cache, or other hierarchical levels). In some examples, the integrated circuit may include multiple different types of memory arrays, such as common memory arrays shared by multiple processing cores or compute units and dedicated memory arrays used by a single processing core or compute unit.

The integrated circuit 102 may include any suitable number of different electronic elements 104 that are designated by the integrated circuit manufacturer as being redundant and/or inactive. For example, the redundant and/or inactive electronic elements may include a combination of processing cores of the CPU, compute units of the GPU, and memory locations of the one or more memory arrays.

The integrated circuit 102 may be initially configured to operate according to a manufacturer's default configuration 126. For example, the manufacturer's default configuration 126 may specify the manufacturer's default power and performance characteristics, operating parameter setpoints, status/mapping/indication of active/inactive electronic elements based on wafer or module testing, and rules/constraints. The manufacturer's default configuration 126 may be stored in non-volatile memory 124 of the computing system 100 and may be visible/accessible by the computing system 100. Moreover, the integrated circuit may be configured such that the manufacturer's default configuration can be overridden by an updated configuration 128 that specifies different active/inactive electronic elements and/or different operating parameter setpoints. For example, the updated configuration 128 may be implemented using memory mapped I/O (MMIO) or other commands that give access to the register settings that control processing core, compute unit, and memory location replacement. In another example, the updated configuration 128 may be implemented using JTAG (Joint Test Action Group) commands in a debugging or test program 132. The test program 132 may be stored in off-chip memory 130 of the computing system 100. Off-chip memory 130 refers to a memory device that is not incorporated into the integrated circuit 102. The computing system 100 may execute the test program 132 to perform testing on the electronic elements 104 of the integrated circuit 102 and output the updated configuration 128. In some examples, the updated configuration 128 may be stored in off-chip memory 130, alternatively or in addition to being stored in the non-volatile memory 124 of the integrated circuit 102. Further, in some examples, a test program may be stored on-chip. In some examples, some test assist features may also exist on-chip and such test assist features may be used in conjunction with a test program that is executed off-chip.

The computing device 100 incorporating the integrated circuit 102 may be configured to test the plurality of electronic elements (e.g., processing cores of the CPU, compute units of the GPU, memory locations of the one or more memory arrays) 104, including the redundant electronic elements designated by the manufacturer as inactive, to determine one or more operating parameters of the integrated circuit 102. In one example, the operating parameter(s) include a minimum operational voltage of each of the electronic elements. In another example, the operating parameter(s) include an operational temperature of each of the electronic elements. In another example, the operating parameter(s) may be used to track aging characteristics of each of the electronic elements.

The integrated circuit 102 includes various monitoring circuits 118 for performing tests for determining the operating parameter(s). For example, the monitoring circuits 118 may include a plurality of power testing circuits 120 configured to determine power characteristics for each of the electronic elements 104, such as a minimum operational voltage level of each of the electronic elements 104. Control of the integrated circuit 102 then may be based on the determined power characteristics. For example, the power testing circuits 120 may indicate that an electronic element degrades at a voltage level greater than a minimum operational voltage setpoint of the integrated circuit 102. In response, the computing system 100 may be configured to increase the minimum operational voltage setpoint of the integrated circuit 102 to maintain a suitable margin (e.g., 50 millivolts).

The monitoring circuits 118 may further include thermal testing circuits 122 configured to determine thermal characteristics for each of the electronic elements 104, such as an operational temperature of each of the electronic elements 104. Control of the integrated circuit 102 then may be based on the determined thermal characteristics. Although the monitoring circuits are schematically shown as separate components, it will be appreciated that one or more monitoring circuits may be incorporated into other circuits located on the integrated circuit. For example, thermal diodes for measuring the temperatures of the electronic elements may be placed all around the integrated circuit, either in or near the processing cores of the CPU, the compute unites of the GPU, and/or the memory array(s).

The plurality of electronic elements 104 may be tested using various test strategies to determine adjustment solutions. In some examples, the electronic elements may be tested one at a time. In other examples, all electronic elements may be tested simultaneously. In yet other examples, a subset of electronic elements may be tested simultaneously (e.g., ¼ at a time, ½ at a time, ⅛ at a time).

The computing system 100 further may be configured to select a subset of electronic elements from the plurality of electronic elements based on the one or more operating parameters. The subset of electronic elements may be designated as active via data in the updated configuration 128 stored in non-volatile memory 124 of the integrated circuit 102 and/or off-chip memory 130 of the computing system 100. The computing system 100 then may control operation of the integrated circuit 102 using the updated configuration 128 instead of the manufacturer's default configuration 126. In particular, the subset of electronic elements designated as active by the updated configuration 128 may be used during operation of the integrated circuit 102.

The subset of electronic elements 104 designated as active in the updated configuration 128 of the integrated circuit 102 may be dictated at least in part by rules and constraints of the integrated circuit 102. In one example, such rules may specify that six out of eight possible processing cores 108 of the CPU 106 must be designated as active. Accordingly, in this example, the testing and selection process would identify the “best” six processing cores 108 according to adjustment criteria for the integrated circuit 102. Further, in implementations, the CPU may operate in a low power mode, and such rules may specify that three out of eight possible processing cores 108 of the CPU 106 must be designated as active in the low power mode. In this example, the testing and selection process would identify the “best” three processing cores 108 according to adjustment criteria for the integrated circuit 102. In some examples, the updated configuration 128 may abide by the rules/constraints of the integrated circuit 102. For example, swapping of active and inactive compute units 112 may be restricted to being within the same quadrant of the GPU 110.

The subset may include any suitable number and/or different type of electronic elements 104 on the integrated circuit 102. In the case of the CPU 106, different processing cores 108 may be selected for inclusion in the subset. In the case of the GPU 110, different compute units 112 may be selected for inclusion in the subset. In the case of the memory array(s) 114, different memory locations 116, rows, and/or columns (within the same memory array or in different memory arrays) may be selected for inclusion in the subset. In some examples, the subset may include processing cores 108 of the CPU 106, compute units 112 of the GPU 110, and memory locations 116 of one or more memory arrays 114. In other examples, operational adjustment may be performed individually for the CPU 106, GPU 110, or memory array(s) 114 without adjusting operation of one or more of the other components of the integrated circuit 102.

In an example where operation of the integrated circuit 102 is adjusted to minimize power consumption, a minimum operational voltage level may be determined for each electronic element 104, and the subset of electronic elements 104 may be selected based on having a lowest minimum operational voltage. In an example where operation of the integrated circuit 102 is adjusted based on thermal characteristics, the subset of electronic elements 104 may be selected based on having a lowest minimum operational temperature of the plurality of electronic elements. For example, electronic elements in a middle portion of the integrated circuit 102 may run hotter than electronic elements located closer to a periphery of the integrated circuit die 102. Thus, these centrally located electronic elements 104 may be swapped out for different electronic elements 104 located along the periphery of the integrated circuit die 102. Further, in some examples, operation of the integrated circuit 102 may be adjusted via selection of the subset of electronic elements 104 to balance power consumption and thermal considerations. The subset of electronic elements may be selected using any suitable algorithm that considers different operating parameters. In one example, the electronic elements having the lowest minimum operational voltage and the lowest operational temperature may be selected for inclusion in the subset. In some examples, these different operating parameters may be weighted differently in a selection algorithm.

Adjusting operation of the integrated circuit 102 further may include adjusting other operating parameters and/or setpoints set by the manufacturer. For example, the manufacturer's default configuration 126 may specify a set of timing parameters for accessing the memory locations 116 of the memory array(s) 114 (e.g., read timings, write timings, internal based pulse widths). Additionally, the default configuration 126 may specify constraints for the memory array(s) 114, such as what memory locations/arrays are controlled by each register (a single array, the arrays for an entire core, the arrays for a quad of cores, all arrays of a particular type across all cores, etc.). The computing system 102 may be configured to test the plurality of memory locations 116 to determine one or more operating parameters of the integrated circuit. As one example, the operating parameter(s) may include a minimum operational voltage. As another example, the operating parameter(s) may include an operational temperature. The computing system 100 may be configured to determine a second set of timing parameters different than the manufacturer's default set of timing parameters based on the one or more operating parameters, and control operation of the integrated circuit 102 using the second, different set of timing parameters instead of the manufacturer's default set of timing parameters. Such parameter adjustment may be applicable to other parameters or setpoints set by the manufacturer, such that any suitable operating parameter and/or operating setpoint set in the manufacturer's default configuration may be visible to the computing system and overridden by the updated configuration 128. For example, the updated configuration 128 may override various power, thermal, and/or acoustic setpoints set by the integrated circuit manufacturer.

In some implementations, operation of the integrated circuit 102 may be adjusted one time after the integrated circuit 102 is manufactured, such as at the time of manufacture of the computing system 100. In this case, the updated configuration 128 may be stored in the non-volatile memory 124 of the integrated circuit 102 (or another memory location, such as off-chip memory 130, of the computing system 100), and the updated configuration 128 may be used persistently to control the integrated circuit 102 instead of the manufacturer's default configuration 126.

In other implementations, the computing system 100 may be configured to repeatedly re-test the plurality of electronic elements 104 and adjust the updated configuration 128 based on the updated results of the re-test. In this case, when the re-test is performed, the adjusted updated configuration 128 may be used to control the integrated circuit 102 instead of the manufacturer's default configuration 126. In some examples, the plurality of electronic elements 104 may be re-tested each time the integrated circuit 102 and/or computing system 100 is powered on and/or each time a software update is performed on the integrated circuit 102 and/or computing device 100. Further, in some examples, the plurality of electronic elements 104 may be re-tested on a periodic basis. In general, suitable times for performing such testing may include times when a user expects a delay (e.g., during boot up or while installing an update), such that any additional delay resulting from the process of adjusting operation of the integrated circuit 102 has minimal impact on the user experience.

In some implementations, the integrated circuit 102 may be configured to operate both in a full power mode in which all electronic elements 104 of the subset that are designated as active are put to use, and in one or more low power modes in which fewer than all electronic elements 104 of the subset that are active are put to use. In one example, eight out of eight cores of a CPU may be put to use in a full power mode and three out of eight cores of the CPU may be put to use in a low power mode. In other examples, any other suitable number of cores may be put to use in a full power mode and a low power mode.

In some examples, constraints may be imposed on the electronic elements 104 that can be selected for the low power modes. For example, the constraints may dictate that compute units 112 within the same quadrant of the GPU 110 are selected for the low power mode. Similar constraints may apply to selecting active processing cores in the CPU and active memory locations in the memory array for low power modes. Further, in some examples, different memory timing parameters may be selected for full power mode and low power mode, and constraints may be imposed on the memory timing parameters that can be selected for the lower power modes.

In some implementations, adjusting operation of the integrated circuit 102 may be performed to help mitigate aging characteristics of the electronic elements. For example, addressing within the integrated circuit 102 may be altered so that what has been designated as processing core/compute unit/memory location 0/1/2/3 . . . may be rotated or swapped over the course of time to ensure that inherently busy processing cores/compute units/memory locations are not constrained to the same physical element. Any number of swaps or switches may be contemplated within the scope of this description. For example, rotation may be used such that 0 goes to 1, 1 goes to 2, 2, goes to 3, etc., and on subsequent switches the rotation is incremented such that the previous 0 goes to 1, 1 goes to 2, 2 goes to 3, etc. In other words, the electronic elements may be swapped sequentially. In another example, electronic elements 104 may be swapped odds for evens. In another example, electronic elements may be swapped low order for high order (0 to 6 become 7 to 13, 7 to 13 become 0 to 6, etc.).

In some examples, swaps of different subsets of electronic elements 104 may be restricted to only occur at a time when the system boots up or goes through a warm (non-power down) reboot. In other examples, swaps may occur during standard operation of the integrated circuit 102 and/or the computing device 100. For example, different compute units of the GPU may be swapped to help mitigate aging characteristics. In yet other examples, swaps may occur periodically. Further, in some examples, swaps of electronic elements 104 may be controlled internally on the integrated circuit 102 or made visible to the computing system 100 so that core addressing is controlled through system operation (e.g., adjusted at that level for taking into consideration how long each addressing option is utilized over time).

Such swaps may be similarly applicable to memory array operations. For example, address swaps may occur for either rows, columns, or both rows and columns so that highly used array locations (or those with data that rarely changes) do not age at a disproportionately higher rate than other locations within the array(s). This can be used in conjunction with altering the data polarity. In some examples, memory location swaps may be restricted to only occur at a time when the system boots up or goes through a warm (non-power down) reboot. In other examples, memory location swaps may occur during standard operation of the integrated circuit 102 and/or the computing device 100. In yet other examples, memory location swaps may occur periodically. Further, in some examples, swaps may be controlled internally on the integrated circuit or made visible to the computing system so that core addressing is controlled through system operation (adjusted at that level for taking into consideration how long each addressing option is utilized over time).

In some examples, electronic elements 104 that are designated as being inactive (either by the manufacturer or because of testing and not being included in the subset of active electronic elements) and still operational (functionally good but not used to swap out another core) can be used for determining when operational setpoints or limits of the integrated circuit 102 are being approached. The computing device 100 may be configured to control the integrated circuit 102 such that the inactive electronic element(s) runs deterministic programs (e.g., test patterns) that are particularly stressful but may only be run for short bursts of activity (10 us, 100 us, 1 ms, 10 ms, 100 ms, etc.) followed by longer periods of inactivity (seconds, minutes, etc.) so as not to adversely affect device power and thermal constraints. The run time and inactive times may be programmable. Patterns are run looking for errors against known results (like Prime-95 or equivalent loads). Core frequency or clock settings to core operation can be set to be deterministically more difficult than the real cores being used by the customer. Where individual regulation control to the core is available, a more stressful voltage setting can be used for the inactive core as well.

In some examples, the default inactive electronic elements may be used to run deterministic test operations only during a system learning or characterization process. The learning process may be carried out to learn minimum operational limits for the electronic elements of the integrated circuit (e.g., to find a fail point before real cores fail). For example, such a learning process may occur at system boot up. In other examples, the inactive electronic elements can be used to run deterministic test operations during normal system use (e.g., during and after the learning process) to ensure that as aging or other factors (such as temperature, voltage fluctuation, etc.) degrade system operation, operating parameters can be adjusted to prevent the active electronic elements from degrading. In other words, the electronic elements not included in the subset may perform deterministic operations independent of and in parallel with operation of the subset of active electronic elements. If the spare electronic element fails first, this allows the system to make an adjustment so that active elements continue to operate without interruption (actions may be, but are not limited to throttling system operation, raising the voltage, lowering the temperature, adjusting the clock speed, a combination of these actions or others, etc.).

In some implementations, the integrated circuit 102 may have a designated electronic element dedicated to determining when operational limits of the integrated circuit 102 are being approached. In other words, the electronic element is not required to be degraded or swapped out as part of a repair solution. Moreover, by having an electronic element dedicated to testing failure conditions, a testing time may be improved, as the operating parameters of the dedicated electronic element may be known/tracked/learned (as opposed to relearning the operational parameters at each system boot up).

As one illustrative example, six processing cores of the CPU 106 are designated as active or “must work”, and two processing cores are designated as redundant spares available for replacement or swapping. The GPU 110 includes sixty-four compute units (CU) 112, fifty-six CUs are designated as active or “must work”, and eight CUs are designated as redundant spares available for replacement or swapping. The one or more memory arrays 114 include a shared L3 memory unit (e.g., a very large array or set of arrays) that includes a plurality of rows and columns designated as spare or redundant and are available for swapping. It will be understood that the approaches for adjusting operation of an integrated circuit described herein may be applicable to any suitable type of integrated circuit that includes redundant electronic elements.

FIG. 2 schematically shows an example block diagram of a layout of CUs in a GPU 200, such as the GPU included in the integrated circuit shown in FIG. 1. The GPU 200 includes sixty-four CUs arranged into four quadrants 202. Each quadrant 202 includes sixteen CUs 206. Fourteen CUs in each quadrant are designated as active and two CUs in each quadrant are designated as inactive or spare compute units by the manufacturer's default configuration. This architecture may apply constraints to the number of subsets of compute units that can be selected in the updated configuration. For example, the spare compute units may be constrained to replacing other compute units only in the same quadrant. In some such examples, and referring to FIG. 2, spare compute unit replacement may be structured to replace any compute unit within a quadrant (i.e. spare compute unit 0 can replace any of the 0-13 compute units, same for spare compute unit 1). In other such examples, spare compute units may be restricted such that spare compute unit 0 is only available to replace compute units 0-6, and spare compute unit 1 is only available to replace compute unites 7-13 in a particular quadrant.

FIG. 3 shows a flow chart illustrating an example method 300 for adjusting operation of an integrated circuit including a plurality of electronic elements. The plurality of electronic elements includes one or more redundant electronic elements designated as inactive according to a manufacturer's default configuration of the integrated circuit. At 302, the plurality of electronic elements including the one or more redundant electronic elements designated as inactive are tested to determine one or more operating parameters of the integrated circuit. In one example, the one or more operating parameters include a minimum operational voltage. In another example, the one or more operating parameters include an operational temperature. In another example, the one or more operating parameters include a minimum operational voltage and an operational temperature.

At 304, a subset of electronic elements is selected from the plurality of electronic elements based on the one or more operating parameters. The subset of electronic elements may be designated as active in an updated configuration of the integrated circuit. In one example, at 306, the subset of electronic elements optionally may be selected based on having a lowest minimum operational voltage. In another example, at 308, the subset of electronic elements optionally may be selected based on having a lowest operational temperature of the plurality of electronic elements. In another example, at 310, the subset of electronic elements optionally may be selected to mitigate aging of the integrated circuit.

At 312, operation of the integrated circuit is controlled persistently using the updated configuration instead of the manufacturer's default configuration. In some implementations, at 314, deterministic operations optionally may be performed with one or more electronic elements not included in the subset and independent of and parallel with operation of the subset of active electronic elements. Further, in some implementations, at 316, at least one of the one or more operating parameter setpoints optionally may be adjusted based on the deterministic operations performed by the one or more electronic elements not included in the subset.

In some implementations, at 318, the plurality of electronic elements optionally may be re-tested to re-determine the one or more operating parameters of the integrated circuit. In some implementations, at 320, for each re-testing, an updated subset of electronic elements optionally may be selected from the plurality of electronic elements based on the one or more re-determined operating parameters, and returning to 312, operation of the integrated circuit optionally may be controlled using the adjusted updated configuration. Likewise, at 314, deterministic operations optionally may be performed with one or more electronic elements not included in the updated subset independent of and in parallel with operation of the updated subset of active electronic elements. Further, at 316, at least one of the one or more operating parameter setpoints optionally may be adjusted based on the deterministic operations performed by the one or more electronic elements not included in the updated subset. The method 300 may continue to re-test the electronic elements, adjust the updated configuration, and control operation of the integrated circuit using the adjusted updated configuration.

FIG. 4 shows a flow chart of an example method for adjusting operation of an integrated circuit including a plurality of memory array elements configured according to a manufacturer's default configuration that specifies a first set of timing parameters for accessing the memory array elements. At 402, the plurality of memory array elements is tested to determine one or more operating parameters of the integrated circuit. At 404, a second set of timing parameters different than the first set of timing parameters is determined based on the one or more operating parameters. At 406, operation of the integrated circuit is controlled using the second set of timing parameters instead of the first set of timing parameters.

In some implementations, at 408, the plurality of memory array elements optionally may be re-tested to re-determine the one or more operating parameters. At 410, for each re-testing, an updated set of timing parameters optionally may be re-determined based on the one or more re-determined operating parameters, and returning to 406, operation of the integrated circuit optionally may be controlled using the updated set of timing parameters instead of the first set of timing parameters. The method 400 may continue to re-test the electronic elements, update the set of timing parameters, and control operation of the integrated circuit using the updated set of timing parameters.

In some implementations, the methods and processes described herein may be tied to a computing system of one or more computing devices. In particular, such methods and processes may be implemented as a computer-application program or service, an application-programming interface (API), a library, and/or other computer-program product.

FIG. 5 schematically shows a non-limiting implementation of a computing system 500 that can enact one or more of the methods and processes described above. Computing system 500 is shown in simplified form. Computing system 500 may take the form of one or more personal computers, server computers, tablet computers, home-entertainment computers, network computing devices, gaming devices, mobile computing devices, mobile communication devices (e.g., smart phone), and/or other computing devices.

Computing system 500 includes a logic machine 502 and a storage machine 504. Computing system 500 may optionally include a display subsystem 506 input subsystem 508, communication subsystem 510, and/or other components not shown in FIG. 500.

Logic machine 502 includes one or more physical devices configured to execute instructions. The logic machine 502 includes an integrated circuit device 512, such as the integrated circuit 102 shown in FIG. 1. For example, the integrated circuit 512 includes a CPU having a plurality of processing cores, wherein one or more of the processing cores are designated by the integrated circuit manufacturer as being redundant and/or inactive. The integrated circuit 512 further includes a GPU having a plurality of compute units, wherein one or more of the compute units are designated by the integrated circuit manufacturer as being redundant and/or inactive. The integrated circuit 512 also includes one or more memory arrays having a plurality of memory locations arranged in rows and columns, wherein one or more of the memory locations, or rows, or columns are designated by the integrated circuit manufacturer as being redundant and/or inactive.

For example, the logic machine 502 may be configured to execute instructions that are part of one or more applications, services, programs, routines, libraries, objects, components, data structures, or other logical constructs. Such instructions may be implemented to perform a task, implement a data type, transform the state of one or more components, achieve a technical effect, or otherwise arrive at a desired result. For example, such instructions may be executed to test electronic elements of the integrated circuit 512 including one or more redundant electronic elements designated as inactive by the integrated circuit manufacturer to determine one or more operating parameters of the integrated circuit, select a subset of electronic elements based on the one or more operating parameters, and control operation of the integrated circuit 512 using the updated configuration including the subset of electronic elements instead of the manufacturer's default configuration. By adjusting operation of the integrated circuit 512 at a final implementation level using the redundant electronic elements of the integrated circuit 512, improved power characteristics at a given performance level may be achieved relative to the manufacturer-configured integrated circuit. In another example, at a given power level, enhanced system performance can be realized. In yet another example, operation of the integrated circuit may be adjusted to balance power and performance characteristics.

The logic machine 502 may include one or more processors configured to execute software instructions. Additionally or alternatively, the logic machine 502 may include one or more hardware or firmware logic machines configured to execute hardware or firmware instructions. Processors of the logic machine may be single-core or multi-core, and the instructions executed thereon may be configured for sequential, parallel, and/or distributed processing. Individual components of the logic machine 502 optionally may be distributed among two or more separate devices, which may be remotely located and/or configured for coordinated processing. Aspects of the logic machine 502 may be virtualized and executed by remotely accessible, networked computing devices configured in a cloud-computing configuration.

Storage machine 504 includes one or more physical devices configured to hold instructions executable by the logic machine 502 to implement the methods and processes described herein. When such methods and processes are implemented, the state of storage machine 504 may be transformed—e.g., to hold different data.

Storage machine 504 may include removable and/or built-in devices. Storage machine 504 may include optical memory (e.g., CD, DVD, HD-DVD, Blu-Ray Disc, etc.), semiconductor memory (e.g., RAM, EPROM, EEPROM, etc.), and/or magnetic memory (e.g., hard-disk drive, floppy-disk drive, tape drive, MRAM, etc.), among others. Storage machine 504 may include volatile, nonvolatile, dynamic, static, read/write, read-only, random-access, sequential-access, location-addressable, file-addressable, and/or content-addressable devices.

It will be appreciated that storage machine 504 includes one or more physical devices. However, aspects of the instructions described herein alternatively may be propagated by a communication medium (e.g., an electromagnetic signal, an optical signal, etc.) that is not held by a physical device for a finite duration.

Aspects of logic machine 502 and storage machine 504 may be integrated together into one or more hardware-logic components. Such hardware-logic components may include field-programmable gate arrays (FPGAs), program- and application-specific integrated circuits (PASIC/ASICs), program- and application-specific standard products (PSSP/ASSPs), system-on-a-chip (SOC), and complex programmable logic devices (CPLDs), for example.

When included, display subsystem 506 may be used to present a visual representation of data held by storage machine 504. This visual representation may take the form of a graphical user interface (GUI). As the herein described methods and processes change the data held by the storage machine 504, and thus transform the state of the storage machine 504, the state of display subsystem 506 may likewise be transformed to visually represent changes in the underlying data. Display subsystem 506 may include one or more display devices utilizing virtually any type of technology. Such display devices may be combined with logic machine 502 and/or storage machine 504 in a shared enclosure, or such display devices may be peripheral display devices.

When included, input subsystem 508 may comprise or interface with one or more user-input devices such as a keyboard, mouse, touch screen, or game controller. In some implementations, the input subsystem 508 may comprise or interface with selected natural user input (NUI) componentry. Such componentry may be integrated or peripheral, and the transduction and/or processing of input actions may be handled on- or off-board. Example NUI componentry may include a microphone for speech and/or voice recognition; an infrared, color, stereoscopic, and/or depth camera for machine vision and/or gesture recognition; a head tracker, eye tracker, accelerometer, and/or gyroscope for motion detection and/or intent recognition; as well as electric-field sensing componentry for assessing brain activity.

When included, communication subsystem 510 may be configured to communicatively couple computing system 500 with one or more other computing devices. Communication subsystem 510 may include wired and/or wireless communication devices compatible with one or more different communication protocols. As non-limiting examples, the communication subsystem 510 may be configured for communication via a wireless telephone network, or a wired or wireless local- or wide-area network. In some implementations, the communication subsystem 510 may allow computing system 500 to send and/or receive messages to and/or from other devices via a network such as the Internet.

In another example, a method for adjusting operation of an integrated circuit including a plurality of electronic elements, the plurality of electronic elements including one or more redundant electronic elements designated as inactive according to a manufacturer's default configuration of the integrated circuit, the method comprises testing the plurality of electronic elements including the one or more redundant electronic elements designated as inactive to determine one or more operating parameters of the integrated circuit, selecting a subset of electronic elements from the plurality of electronic elements based on the one or more operating parameters, wherein the subset of electronic elements is designated as active in an updated configuration of the integrated circuit, and controlling operation of the integrated circuit using the updated configuration instead of the manufacturer's default configuration. In this example and/or another example, the one or more redundant electronic elements may include one or more processing cores of a central processing unit (CPU), one or more compute units of a graphics processing unit (GPU), and/or one or more memory array elements. In this example and/or another example, the one or more operating parameters may include a minimum operational voltage, and the subset of electronic elements is selected based on having a lowest minimum operational voltage. In this example and/or another example, the one or more operating parameters may include an operational temperature, and the subset of electronic elements is selected based on having a lowest minimum operational temperature of the plurality of electronic elements. In this example and/or another example, electronic elements not included in the subset may be designated as inactive in the updated configuration and not used by the integrated circuit. In this example and/or another example, the method may further comprise performing deterministic operations with one or more electronic elements not included in the subset and independent of and in parallel with operation of the subset of active electronic elements. In this example and/or another example, the updated configuration may include one or more operating parameter setpoints for controlling operation of the integrated circuit, and the method may further comprise adjusting at least one of the one or more operating parameter setpoints based on the deterministic operations performed by the one or more electronic elements not included in the subset. In this example and/or another example, the integrated circuit may be configured to operate in a full power mode and a low power mode, all electronic elements of the subset of electronic element may be designated as active in the full power mode, and fewer than all electronic elements of the subset may be designated as active in the low power mode. In this example and/or another example, the method may further comprise repeatedly re-testing the plurality of electronic elements to re-determine the one or more operating parameters of the integrated circuit, for each re-testing, selecting an updated subset of electronic elements from the plurality of electronic elements based on the one or more re-determined operating parameters, and controlling operation of the integrated circuit using the updated subset of electronic elements. In this example and/or another example, the plurality of electronic elements may be re-tested when the integrated circuit is powered on and/or when a software update is performed on the integrated circuit. In this example and/or another example, the plurality of electronic elements may include a plurality of memory array elements configured according to a manufacturer's default configuration that specifies a first set of timing parameters for accessing the memory array elements, and the method may further comprise testing the plurality of memory array elements to determine one or more operating parameters of the integrated circuit, determining a second set of timing parameters different than the first set of timing parameters based on the one or more operating parameters, and controlling operation of the integrated circuit using the second set of timing parameters instead of the first set of timing parameters.

In another example, a computing system comprises an integrated circuit including a plurality of electronic elements, the plurality of electronic elements including one or more redundant electronic elements designated as inactive according to a manufacturer's default configuration of the integrated circuit, and wherein the computing system is configured to select a first subset of electronic elements from the plurality of electronic elements, wherein the first subset of electronic elements is designated as active in an updated configuration of the integrated circuit, control operation of the integrated circuit using the updated configuration instead of the manufacturer's default configuration, select a second subset of electronic elements from the plurality of electronic elements, wherein the second subset is different than the first subset, and wherein the second subset of electronic elements are designated as active in an adjusted updated configuration of the integrated circuit, and control operation of the integrated circuit using the adjusted updated configuration. In this example and/or another example, the first subset and the second subset may be selected by sequentially swapping electronical elements. In this example and/or another example, the first subset and the second subset may be selected by swapping odd and even addressed electronic elements. In this example and/or another example, the first subset and the second subset may be selected by switching between lower order electronic elements and higher order electronic elements. In this example and/or another example, the computing system may be further configured to test the plurality of electronic elements including the one or more redundant electronic elements designated as inactive to determine one or more operating parameters of the integrated circuit, and the first subset and the second subset may be selected based on the one or more operating parameters.

In another example, a computing system comprises an integrated circuit including a plurality of memory array elements configured according to a manufacturer's default configuration that specifies a first set of timing parameters for accessing the memory array elements, and wherein the computing system is configured to test the plurality of memory array elements to determine one or more operating parameters of the integrated circuit, determine a second set of timing parameters different than the first set of timing parameters based on the one or more operating parameters, and control operation of the integrated circuit using the second set of timing parameters instead of the first set of timing parameters. In this example and/or another example, the computing system may be further configured to repeatedly re-test the plurality of memory array elements to re-determine the one or more operating parameters, for each re-testing, determine an updated set of timing parameters based on the one or more re-determined optimization parameters, and control operation of the integrated circuit using the updated set of timing parameters instead of the first set of timing parameters. In this example and/or another example, the plurality of electronic elements may be re-tested each time the integrated circuit is powered on. In this example and/or another example, the plurality of electronic elements may be re-tested each time a software update is performed on the integrated circuit.

It will be understood that the configurations and/or approaches described herein are exemplary in nature, and that these specific embodiments or examples are not to be considered in a limiting sense, because numerous variations are possible. The specific routines or methods described herein may represent one or more of any number of processing strategies. As such, various acts illustrated and/or described may be performed in the sequence illustrated and/or described, in other sequences, in parallel, or omitted. Likewise, the order of the above-described processes may be changed.

The subject matter of the present disclosure includes all novel and non-obvious combinations and sub-combinations of the various processes, systems and configurations, and other features, functions, acts, and/or properties disclosed herein, as well as any and all equivalents thereof. 

The invention claimed is:
 1. On a computing device comprising an integrated circuit for operating the computing device, a method for adjusting operation of the integrated circuit, the integrated circuit including a plurality of electronic elements, the plurality of electronic elements including one or more redundant electronic elements designated as inactive according to a manufacturer's default configuration of the integrated circuit, the one or more redundant electronic elements include one or more of a processing core of a central processing unit (CPU), a compute unit of a graphics processing unit (GPU), or a memory array element, the method comprising: performing a deterministic test operation on a selected redundant electronic element of the one or more redundant electronic elements designated as inactive to determine one or more operational limits for the plurality of electronic elements of the integrated circuit, the one or more operational limits determined based on a failure of the selected redundant electronic element; updating one or more operating parameters based on the one or more operational limits to form one or more updated operating parameters, the one or more updated operating parameters comprising one or more of a determined operational temperature and a determined operational voltage; and controlling operation of the integrated circuit using the one or more updated operating parameters.
 2. The method of claim 1, wherein performing the deterministic test operation comprises performing the deterministic test operation at system boot up.
 3. The method of claim 1, wherein controlling operation of the integrated circuit using the one or more updated operating parameters comprises one or more of throttling system operation, raising an operational voltage, lowering an operational temperature, and adjusting a clock speed.
 4. The method of claim 1, wherein the selected redundant electronic element is a dedicated redundant electronic element for performing deterministic test operations.
 5. The method of claim 4, further comprising: performing a plurality of deterministic test operations; and tracking operating parameters of the dedicated redundant electronic element over the plurality of deterministic test operations.
 6. The method of claim 1, further comprising selecting a subset of electronic elements from the plurality of electronic elements based on the one or more updated operating parameters, wherein the subset of electronic elements is designated as active in an updated configuration of the integrated circuit, and controlling operation of the integrated circuit using the updated configuration, wherein the integrated circuit is configured to operate in a full power mode and a low power mode, wherein all electronic elements of the subset of electronic element are designated as active in the full power mode, and wherein fewer than all electronic elements of the subset are designated as active in the low power mode.
 7. The method of claim 1, further comprising: repeatedly re-testing the plurality of electronic elements to re-determine the one or more updated operating parameters of the integrated circuit; for each re-testing, selecting an updated subset of electronic elements from the plurality of electronic elements based on the one or more re-determined updated operating parameters; and controlling operation of the integrated circuit using the updated subset of electronic elements instead of the manufacturer's default configuration.
 8. The method of claim 7, wherein the plurality of electronic elements is re-tested when the integrated circuit is powered on or when a software update is performed on the integrated circuit.
 9. The method of claim 1, wherein the plurality of electronic elements includes a plurality of memory array elements configured according to a manufacturer's default configuration that specifies a first set of timing parameters for accessing the memory array elements, and wherein the method further comprises: determining a second set of timing parameters different than the first set of timing parameters based on the one or more updated operating parameters; and controlling operation of the integrated circuit using the second set of timing parameters instead of the first set of timing parameters.
 10. A computing system, comprising: an integrated circuit including a plurality of electronic elements, the plurality of electronic elements including one or more redundant electronic elements designated as inactive according to a manufacturer's default configuration of the integrated circuit, the one or more redundant electronic elements include one or more of a processing core of a central processing unit (CPU), a compute unit of a graphics processing unit (GPU), or a memory array element; and wherein the computing system is configured to: perform a deterministic test operation on a selected redundant electronic element of the one or more redundant electronic elements designated as inactive to determine one or more operational limits for the plurality of electronic elements of the integrated circuit, the one or more operational limits determined based on a failure of the selected redundant electronic element; update one or more operating parameters based on the one or more operational limits to form one or more updated operating parameters, the one or more updated operating parameters comprising one or more of a determined operational temperature and a determined operational voltage; and control operation of the integrated circuit using the one or more updated operating parameters.
 11. The computing system of claim 10, wherein the computing system is further configured to: based on the determined operational voltage, select a first subset of electronic elements from the plurality of electronic elements, wherein the first subset of electronic elements is designated as active in an updated configuration of the integrated circuit; and control operation of the integrated circuit using the updated configuration instead of the manufacturer's default configuration; based on the determined operational temperature, select a second subset of electronic elements from the plurality of electronic elements, wherein the second subset of electronic elements is designated as active in an adjusted updated configuration of the integrated circuit; and control operation of the integrated circuit using the adjusted updated configuration.
 12. The computing system of claim 11, wherein the first subset and the second subset are selected by one or more of sequentially swapping electronic elements and swapping odd and even addressed electronic elements.
 13. The computing system of claim 11, wherein the first subset and the second subset are selected by switching between lower order electronic elements and higher order electronic elements. 